package com.corhyfar.dao.impl;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.corhyfar.beans.Usuario;
import com.corhyfar.dao.UsuarioDao;
import com.corhyfar.util.SQLConnection;

public class UsuarioDaoImpl implements UsuarioDao {

	Connection cn = null;
	PreparedStatement ps = null;
	ResultSet rs = null;

	@Override
	public void guardaUsuario(Usuario usuario) {
		Usuario obtenido = null;

		try {
			cn = new SQLConnection().GetConnection();
			String sql = "insert into usuario values (?,?,?,?)";
			ps = cn.prepareStatement(sql);
			ps.setString(1, usuario.getCod_usuario());
			ps.setString(2, usuario.getClave_usuario());
			ps.setInt(3, usuario.getId_perfil());
			ps.setInt(4, usuario.getEstado_usuario());

			int rst = ps.executeUpdate();
			ps.close();
			cn.close();

		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

	@Override
	public Usuario validaUsuario(String codigo, String clave) {
		
		Usuario obtenido=null;
		try {

			cn = new SQLConnection().GetConnection();
			String sql = "select * from usuario where cod_usuario=? and clave_usuario=?";
			ps = cn.prepareStatement(sql);
			ps.setString(1, codigo);
			ps.setString(2, clave);

			rs = ps.executeQuery();
			if (rs.next()) {
				obtenido=new Usuario(rs.getString(1), rs.getString(2), rs.getInt(3), rs.getInt(4));
				
			} 
			ps.close();
			cn.close();

		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		return obtenido;
	}

	@Override
	public List<Usuario> listarUsuarios() {
		List<Usuario> lista = new ArrayList<Usuario>();
		try {
			cn = new SQLConnection().GetConnection();
			String sql = "select * from usuario";
			ps = cn.prepareStatement(sql);
			rs = ps.executeQuery();

			while (rs.next()) {

				lista.add(new Usuario(rs.getString(0), rs.getString(1), rs
						.getInt(2), rs.getInt(3)));

			}
			ps.close();
			cn.close();

		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		return lista;
	}

}
